/**
 * 北京钉图互动科技 all right reserver
 */
package com.impress.commons.vo;

import java.io.Serializable;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * @author Wangyi
 * @since 2016年6月1日
 */
@ApiModel(value = "请求接口公共参数")
public class BaseRequestParameter implements Serializable {

	private static final long serialVersionUID = 1935257437506798423L;

	@ApiModelProperty(value = "会话token")
	private String token;

	@ApiModelProperty(value = "发起请求时间戳，单位豪秒", required = true)
	private long timestamp;

	@ApiModelProperty(value = "APP的bundleId")
	private String bundleId;

	@ApiModelProperty(value = "设备ID", required = true)
	private String deviceId;

	@ApiModelProperty(value = "设备类型，可使用序号", required = true)
	private DeviceTypeEnum deviceType;

	@ApiModelProperty(value = "设备型号", required = true)
	private String deviceModel;

	@ApiModelProperty(value = "设备系统版本", required = true)
	private String osVersion;

	@ApiModelProperty(value = "设备系统类型，可使用序号", required = true)
	private DeviceOsTypeEnum osType;

	@ApiModelProperty(value = "APP版本", required = true)
	private String appVersion;

	@ApiModelProperty(value = "APP发布渠道", required = true)
	private String releaseChannel;

	@ApiModelProperty(value = "用户ID", required = false)
	private Long uid;

	/**
	 * @return the token
	 */
	public String getToken() {
		return token;
	}

	/**
	 * @param token the token to set
	 */
	public void setToken(String token) {
		this.token = token;
	}

	/**
	 * @return the timestamp
	 */
	public long getTimestamp() {
		return timestamp;
	}

	/**
	 * @param timestamp the timestamp to set
	 */
	public void setTimestamp(long timestamp) {
		this.timestamp = timestamp;
	}

	/**
	 * @return the bundleId
	 */
	public String getBundleId() {
		return bundleId;
	}

	/**
	 * @param bundleId the bundleId to set
	 */
	public void setBundleId(String bundleId) {
		this.bundleId = bundleId;
	}

	/**
	 * @return the deviceId
	 */
	public String getDeviceId() {
		return deviceId;
	}

	/**
	 * @param deviceId
	 *        the deviceId to set
	 */
	public void setDeviceId(String deviceId) {
		this.deviceId = deviceId;
	}

	/**
	 * @return the deviceModel
	 */
	public String getDeviceModel() {
		return deviceModel;
	}

	/**
	 * @param deviceModel
	 *        the deviceModel to set
	 */
	public void setDeviceModel(String deviceModel) {
		this.deviceModel = deviceModel;
	}

	/**
	 * @return the deviceType
	 */
	public DeviceTypeEnum getDeviceType() {
		return deviceType;
	}

	/**
	 * @param deviceType
	 *        the deviceType to set
	 */
	public void setDeviceType(DeviceTypeEnum deviceType) {
		this.deviceType = deviceType;
	}

	/**
	 * @return the osVersion
	 */
	public String getOsVersion() {
		return osVersion;
	}

	/**
	 * @param osVersion
	 *        the osVersion to set
	 */
	public void setOsVersion(String osVersion) {
		this.osVersion = osVersion;
	}

	/**
	 * @return the osType
	 */
	public DeviceOsTypeEnum getOsType() {
		return osType;
	}

	/**
	 * @param osType
	 *        the osType to set
	 */
	public void setOsType(DeviceOsTypeEnum osType) {
		this.osType = osType;
	}

	/**
	 * @return the appVersion
	 */
	public String getAppVersion() {
		return appVersion;
	}

	/**
	 * @param appVersion the appVersion to set
	 */
	public void setAppVersion(String appVersion) {
		this.appVersion = appVersion;
	}

	/**
	 * @return the releaseChannel
	 */
	public String getReleaseChannel() {
		return releaseChannel;
	}

	/**
	 * @param releaseChannel
	 *        the releaseChannel to set
	 */
	public void setReleaseChannel(String releaseChannel) {
		this.releaseChannel = releaseChannel;
	}

	/**
	 * @return the uid
	 */
	public Long getUid() {
		return uid;
	}

	/**
	 * @param uid the uid to set
	 */
	public void setUid(Long uid) {
		this.uid = uid;
	}

	@Override
	public String toString() {
		StringBuilder builder = new StringBuilder();
		builder.append("BaseRequestParameter [");
		if (token != null) {
			builder.append("token=");
			builder.append(token);
			builder.append(", ");
		}
		builder.append("timestamp=");
		builder.append(timestamp);
		builder.append(", ");
		if (bundleId != null) {
			builder.append("bundleId=");
			builder.append(bundleId);
			builder.append(", ");
		}
		if (deviceId != null) {
			builder.append("deviceId=");
			builder.append(deviceId);
			builder.append(", ");
		}
		if (deviceType != null) {
			builder.append("deviceType=");
			builder.append(deviceType);
			builder.append(", ");
		}
		if (deviceModel != null) {
			builder.append("deviceModel=");
			builder.append(deviceModel);
			builder.append(", ");
		}
		if (osVersion != null) {
			builder.append("osVersion=");
			builder.append(osVersion);
			builder.append(", ");
		}
		if (osType != null) {
			builder.append("osType=");
			builder.append(osType);
			builder.append(", ");
		}
		if (appVersion != null) {
			builder.append("appVersion=");
			builder.append(appVersion);
			builder.append(", ");
		}
		if (releaseChannel != null) {
			builder.append("releaseChannel=");
			builder.append(releaseChannel);
			builder.append(", ");
		}
		if (uid != null) {
			builder.append("uid=");
			builder.append(uid);
		}
		builder.append("]");
		return builder.toString();
	}

}
